레드팀
레드팀풀체인_04_무기화 및 페이로드
작성자 : Heehyeon Yoo|2025-12-24
# RedTeam# Weaponization# MalwareDev# Evasion# EDR
1. 무기화(Weaponization) 개요
무기화는 공격 코드를 실제 공격 가능한 형태(Executable, DLL 등)로 포장하는 단계이다. 단순히 쉘코드(Shellcode)를 만드는 것을 넘어, 보안 솔루션(EDR/AV)을 우회(Evasion)하고 타겟 시스템에서 안정적으로 실행되도록 만드는 Malware Development 과정을 포함한다.
2. C2 에이전트와 로더(Loader) 구조
레드팀 작전에서는 주로 C2(Command & Control) 프레임워크(예: Sliver, Cobalt Strike)에서 생성된 쉘코드를 커스텀 로더(Loader)를 통해 실행한다.
- 쉘코드(Shellcode): 실제 악성 행위를 수행하는 기계어 코드. C2 서버와 통신 기능을 포함한다.
- 로더(Loader): 쉘코드를 메모리에 적재하고 실행하는 프로그램이다. 암호화된 쉘코드를 복호화하고, 메모리 할당 및 실행 권한 부여(RWX) 등을 수행한다.
- Reflective DLL Loading: 디스크에 파일을 쓰지 않고(Fileless), 메모리 상에서 직접 DLL을 로드하여 실행하는 기법이다. 흔적을 최소화할 수 있다.
3. 탐지 우회(Defense Evasion) 기법
최신 EDR은 메모리 스캔, 행위 기반 탐지, 정적 분석 등 다양한 방법으로 악성 코드를 잡아낸다. 이를 우회하기 위한 기법들이 필수적이다.
3.1. 난독화(Obfuscation)와 암호화
- Sleep Mask: 에이전트가 대기(Sleep) 상태일 때, 메모리에 있는 자신의 쉘코드 영역을 암호화하여 메모리 스캐너의 탐지를 피한다. 실행 시에만 복호화된다.
- Mutator: 쉘코드의 형태를 매번 변형시켜 정적 시그니처 탐지를 어렵게 만든다.
3.2. DLL 사이드로딩(DLL Sideloading)
정상적인 실행 파일(Legitimate Executable)이 실행될 때, 같은 폴더에 있는 DLL을 우선적으로 로드하는 윈도우의 특성을 악용한 기법이다.
- 원리: 정상 프로그램(예: Notepad.exe)이
kernel32.dll을 호출할 때, 악성 코드가 포함된 가짜kernel32.dll을 같은 경로에 두어 실행되게 한다. - 장점: 서명된 정상 프로세스 하위에서 악성 코드가 실행되므로, 화이트리스트 기반 통제를 우회하기 쉽다.
3.3. 간접 시스템 호출(Indirect Syscalls)
EDR은 보통 사용자 모드 후킹(User-land Hooking)을 통해 API 호출을 감시한다.(예: ntdll.dll의 함수를 가로챔)
- Direct Syscalls:
ntdll.dll을 거치지 않고, 어셈블리어로 직접 커널(Kernel)에 시스템 콜을 요청한다. EDR의 감시를 완전히 벗어날 수 있지만, 구현이 복잡하다. - Indirect Syscalls: Direct Syscalls의 단점(시스템 콜 번호 변경 등)을 보완하고, 호출 흐름을 정상적인 것처럼 보이게 하기 위해
ntdll.dll내부의syscall명령어 주소로 점프(JMP)하여 실행한다. 이는 Call Stack Spoofing과 함께 사용되어 EDR을 더욱 정교하게 속인다.
4. 결론
페이로드 제작은 프로그래밍(C/C++, Assembly) 능력과 운영체제 내부 구조(Internals)에 대한 깊은 이해가 필요하다. 오픈소스 도구(Sliver 등)는 시그니처가 공개되어 있어 그대로 사용하면 탐지될 확률이 높으므로, 반드시 커스터마이징(Customization) 과정을 거쳐야 한다.